
// module.exports = {
//     entry: "./src/index.tsx",
//     output: {
//         filename: "bundle.js",
//         path: __dirname + "/dist"
//     },

//     // Enable sourcemaps for debugging webpack's output.
//     devtool: "source-map",

//     resolve: {
//         // Add '.ts' and '.tsx' as resolvable extensions.
//         extensions: [".ts", ".tsx", ".js", ".json"]
//     },

//     module: {
//         rules: [
//             // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
//             { test: /\.tsx?$/, loader: "awesome-typescript-loader" },

//             // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
//             { enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
//         ],
//     },

//     // When importing a module whose path matches one of the following, just
//     // assume a corresponding global variable exists and use that instead.
//     // This is important because it allows us to avoid bundling all of our
//     // dependencies, which allows browsers to cache those libraries between builds.
//     externals: {
//         "react": "React",
//         "react-dom": "ReactDOM"
//     },
// };

// var webpack = require('webpack');
var path = require('path');
var fs = require('fs');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var CleanWebpackPlugin = require('clean-webpack-plugin');

const outPath = path.join(__dirname, 'dist');
const publicPath = outPath.replace(/\\/g, '/') + '/';

//打包成全局css
const extractStyle = new ExtractTextPlugin('./main.css');

const config = {
    /**
     *  /////////////////////////////////source-map////////////////////////////////
     *  在一个单独的文件中产生一个完整且功能完全的文件。这个文件具有最好的source map，但是它会减慢打包文件的构建速度
     *  /////////////////////////////////cheap-module-source-map////////////////////////////////
     *  在一个单独的文件中生成一个不带列映射的map，不带列映射提高项目构建速度，但是也使得浏览器开发者工具只能对应到具体的行，不能对应到具体的列（符号），会对调试造成不便；
     *  /////////////////////////////////eval-source-map////////////////////////////////
     *  使用eval打包源文件模块，在同一个文件中生成干净的完整的source map。这个选项可以在不影响构建速度的前提下生成完整的sourcemap，但是对打包后输出的JS文件的执行具有性能和安全的隐患。不过在开发阶段这是一个非常好的选项，但是在生产阶段一定不要用这个选项；
     *  /////////////////////////////////cheap-module-eval-source-map////////////////////////////////
     *  这是在打包文件时最快的生成source map的方法，生成的Source Map 会和打包后的JavaScript文件同行显示，没有列映射，和eval-source-map选项具有相似的缺点；
     */
    devtool: 'source-map',//默认source-map调试时无法查看ts源
    context: path.join(__dirname, 'src'),
    resolve: {
        extensions: ['', '.js', '.jsx', '.ts', '.tsx'],
        root: [
            path.join(__dirname, './src')
        ]
    },
    module: {
        loaders: [
            {
                test: /\.ts(x?)$/,
                loader: 'ts'
            },
            {
                test: /\.css$/,
                loader: extractStyle.extract('css')
            },
            {
                test: /\.less$/,
                loader: extractStyle.extract('css!less')
            },
            {
                test: /\.(eot|woff|ttf|png|gif|svg)([\?]?.*)$/,
                loader: 'file?name=[path][name].[ext]'
            }
        ]
    },
    entry: {
        'index': [ //渲染进程
            './index.tsx'
        ]
    },
    output: {
        path: outPath,
        filename: '[name].js'
    },
    plugins: [
        new CleanWebpackPlugin(['dist']),
        new CopyWebpackPlugin([
            { from: '../index.html' }
        ]),
        extractStyle,
        // new webpack.optimize.OccurenceOrderPlugin()//为组件分配ID，通过这个插件webpack可以分析和优先考虑使用最多的模块，并为它们分配最小的ID
        // new webpack.optimize.UglifyJsPlugin() //在发布时打开这个插件，最后打包的js会压缩加密，平时开发时不要打开，不然很慢
    ],
    externals: {
        "jquery": "$",
        "pixi": "PIXI",
        "react": "React",
        "react-dom": "ReactDOM",
        "golden-layout": "GoldenLayout",
        "antd": true
    }
};

module.exports = config;